// // 类型保护  （细分类型）  typeof  instanceof in

// typof
// function isType(val:string | number){
//     if(typeof val === 'string'){
//         val.
//     }else{
//         val.
//     }
// }
class Person {}
class Animal {}
function getType(type: Person | Animal) {
  if (type instanceof Person) {
    type;
  } else {
    type;
  }
}
let person1 = {
  name: "jw",
  high: true,
};
let person2 = {
  name: "zf",
  fat: true,
};

type Zhu = typeof person2;
type Jw = typeof person1;
function getPerson(person:Zhu | Jw){
    if('high' in person){
        person
    }else{
        person
    }
}
// 在ts中又新增了一些叫法   可以通过一个字段来判断两个人 可辨识的类型
interface I1 {
    name: "jw",
    high:string
}

interface I2 {
    name: "zf",
    fat:string
}
// is语法可以根据返回值推断 是不是这个类型

function isJw(person:I1 | I2):person is I1{ // 此方法返回的是true | false
    return person.name === 'jw'
}

// 判断一个类型是不是一个对象 是 、 不是

function getPerson2(person:I1 | I2){
    if(isJw(person)){
        person
    }else{
        person
    }
}
export {}